package org.ssssssss.example.mail;

import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Date;
import java.util.Properties;

public class SendMail {

        //发件人地址
        public static String senderAddress="zmjlhc@163.com";
        //收件人地址
        public static String recipientAddress="zmjlhc@163.com";//可以给自己发，也就是发件人和收件人地址一样
        //发件人的密码
        public static String senderPassword="JWKKOTYFYPCEGYCE";//我用的是qq邮箱的授权码，没有的参考下图获取

        public static void main(String[] args) throws Exception{
            //1.连接邮件服务器的参数配置

            Properties properties=new Properties();
            //设置用户的认证方式
            properties.setProperty("mail.smtp.auth", "true");
            //设置传输协议
            properties.setProperty("mail.transport.protocol", "smtp");
            //设置发件人的SMTP邮件服务器地址
            properties.setProperty("mail.smtp.host", "smtp.163.com");
            //2.创建定义整个应用程序所需环境信息的Session对象
            Session   session = Session.getInstance(properties);
            //设置调试信息在控制台打印
            session.setDebug(true);

            //3.创建邮件的实例对象
            Message message=getMimeMessage(session);
            //4.根据session对象获取邮件传输对象transport
            Transport transport=session.getTransport();
            //设置发件人的账户和密码
            transport.connect(senderAddress, senderPassword);
            //发送邮件
            transport.sendMessage(message, message.getAllRecipients());
            //5.关闭邮件连接
            transport.close();
        }

        /**
         *@Author huang
         *@Description 获得一封邮件的实例对象
         *@Date 2020/7/28 20:21
         *@Param [session]
         *@Return javax.mail.Message
         */
        public static Message getMimeMessage(Session session) throws Exception{
            //创建一封邮件的实例对象

            MimeMessage msg=new MimeMessage(session);
            //设置发件人的地址
            msg.setFrom(new InternetAddress(senderAddress));
            //设置收件人的地址
            msg.setRecipient(Message.RecipientType.TO, new InternetAddress(recipientAddress));
            //设置邮件的主题
            msg.setSubject("邮件主题", "UTF-8");
            //设置邮件的正文
            msg.setContent("这是一封纯文本文件", "text/html;charset=utf-8");
            //设置邮件的发送时间，默认立即发送
            msg.setSentDate(new Date());

            return msg;
        }
    }



